# 现在我们有2015到2017年25万条911的紧急电话的数据，
# 请统计出出这些数据中不同类型的紧急情况的次数，
# 如果我们还想统计出不同月份不同类型紧急电话的次数的变化情况，应该怎么做呢？
# 数据来源：https://www.kaggle.com/mchirico/montcoalert/data

import pandas as pd
from matplotlib import pyplot as plt
import numpy as np

df = pd.read_csv('./911.csv')

# print(df.head())
# 看是否有缺失，并确定缺失的是我们需要的数据不
# print(df.info())

# title字符串中的第一个为类型
series_data = df['title'].str.split(': ').tolist()
# [[],[]]
cate_list = [i[0] for i in series_data]
cate_length = len(set(cate_list))
print(cate_length) # 只有三种分类


zeros_df = pd.DataFrame(np.zeros((len(cate_list),cate_length)),columns=set(cate_list))
print(type(zeros_df))
print(zeros_df.head())

'''
# 用这种方法遍历25w条数据，太多了很慢
for i in range(len(cate_list)):
    zeros_df[i,cate_list[i]] = 1
print(zeros_df.head())
'''


'''
这种方法比较省事
# 将cate_list变为series类型，然后对值进行统计
cate_series = pd.Series(cate_list)
cate_count = cate_series.value_counts()
print(cate_count.head())
# EMS        124840
# Traffic     87465
# Fire        37432
'''


'''
# 就只遍历3个分类
for i in set(cate_list):
    # 根据字符串是否包含该数来判断
    zeros_df[i][df['title'].str.contains(i)] = 1
# print(zeros_df.head())
sum_df = zeros_df.sum(axis=0)
print(sum_df)
print(type(sum_df))#series类型
'''




# 第四种方法，整理成DataFrame格式，然后groupby分组统计
# df["cate"] = pd.DataFrame(np.array(cate_list).reshape((df.shape[0],1)))
df['cate'] = pd.DataFrame(np.array(cate_list))
print(df.head(1))
print(df.groupby(by="cate").count()["title"])

